When a data sequence is to be transmitted from a data source to a destination, there are a number of available alternatives. The first alternative is to transmit the entire data sequence as a continuous stream over a communication path that connects the data source with the destination. Unfortunately, such an approach can prove troublesome when the data sequence is quite large because the transmission may monopolize the communication path. This problem is heightened when the communication path is shared by multiple entities. Another alternative is to divide the data sequence into blocks and to transmit the data sequence a block at a time from the data source to the destination. In some instances, data blocks for the data sequence may be stored on multiple storage devices. A complication that arises in such situations is how to assure that the data blocks are transmitted from the appropriate devices in the proper sequence over the communication path. One possible problem is that multiple storage devices will output blocks of data of the data sequence at the same time.